草庐IT

c++ - 包装第 3 方 DLL

全部标签

c++ - 为什么我的 DLL 被 MSE 检测为可疑?

MicrosoftSecurityEssentials不断提示我将我自己的一个DLL(用nativeC++编写)发送给Microsoft以进行进一步分析,因为(我猜)存在某种可疑行为。我想找出为什么MSE认为我的DLL可疑。DLL是我用nativeC++开发的3D游戏的客户端相关代码。它所做的只是使用套接字api连接到服务器,处理来自服务器的传入消息,处理鼠标和键盘输入(通过OIS-面向对象的输入系统),处理一些Windows消息(调整大小/最小化/退出等)和实现游戏的主循环,它基本上调用我单独的renderer.dll中的函数(这对MSE没问题)。我不会说什么了不起的。我将dll提交

windows - 可执行加载与已加载的 dll 相同的 dll

我即将开始对我的项目进行重大修改,我只是想澄清一些事情,因为我认为我的设计可能有些复杂。我有一个加载dll的可执行文件,我们称之为dll1,然后加载dll2。可执行文件还加载dll2。我要问的是,我是否有两个dll2的全局和静态成员变量实例,dll2的第二次加载是否发生,或者即使dll2由不同的dll加载,可执行文件是否只能加载dll2的第一个?我知道我应该在内存中只有一份dll2代码副本,这很好。我感兴趣的是全局变量和静态变量。 最佳答案 每个进程只能加载任何特定DLL的一个实例。 关

c - MSVC 生成的符号表中 __real、__imp、__xmm 符号的含义

我是一名UNIX开发人员,负责帮助维护一些Windows软件,我正在查看.DEF生成器同时修复错误。它不包括__xmm,__real和__imp-来自导出的前缀符号。我一直在努力弄清楚这些符号到底是什么。很明显,它们不需要出现在.DEF中。文件(如果它们需要在DLL接口(interface)上导出,编译器将__declspec(dllexport)对其自身进行注释)但是......它们是什么?看起来排除__imp的目的前缀是排除functioncallthunks.正确吗?搜索MSDN未提供有关__xmm的信息或__real(顺便说一句,使用social.msdn.microsoft.

c++ - OpenProcessToken 因本地系统服务的 ERROR_ACCESS_DENIED 而失败

先说说我的情况。我在下面描述的问题来自最终用户的机器,我所要做的只是一份Windows事件日志的拷贝。我无法访问机器本身来运行任何调试测试。现在是问题。我有一个这样创建的服务应用程序:SC_HANDLEhScService=CreateService(hScManager,L"MyServiceID",L"MyServiceName",SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,SrvcPath,NULL,NULL,NULL,NULL,_T(""));服务进程后

c - 测试文件是否可删除

在尝试对文件执行DeleteFile之前,有什么方法可以确定文件是否可以删除。我只想测试DeleteFile是否会在不真正删除文件的情况下成功。我想做的是创建一个文件的硬链接(hardlink),如果它没有被使用,如果它正在使用而没有FILE_SHARE_DELETE复制它(系统中有一个打开的句柄没有FILE_SHARE_DELETE标志)。谢谢! 最佳答案 免责声明:我对Windows编程一无所知。但我阅读了文档。根据CreateFile的MSDN文档,您可以指定DELETE在dwDesiredAccess参数中,如果访问权限不可

c++ - 如何在 C 中显示 _getch() 字符的整数值?

我怎么知道我用_getch()保存的键盘字符的整数值;例如:intkey;key=_getch();MessageBox(NULL,key,"Sometitle",MB_OK);但是消息框只显示一些不可读的东西,比如“ÿÿÿÿÿÿ”有什么方法可以知道C/C++中char键的整数值?或者有人知道字符键的所有键盘值?因为我可以轻松比较:key=='a'但是......我想尝试一种更简单的方法来比较所有键盘键而不使用VK_TAB和那个〜 最佳答案 ::MessageBox()函数需要一个字符数组(又名C字符串)。MessageBox(NU

windows - 等待程序加载 DLL,然后将其挂起

我想在程序加载后立即挂接一个api。为此,我使用带有适当标志集的createprocess,以便创建暂停的进程。我放下钩子(Hook),然后恢复它。但是当我尝试连接一个不是来自ntdll.DLL的api时,我得到一个ERROR_INVALID_ADDRESS(487)。如果我等到程序开始放置钩子(Hook),我可以毫不费力地完成。这让我相信进程在启动时不会加载每个DLL(即使它们是静态链接的),并且在iat上与apiI对应的内存区域之前需要进行一些初始化想要Hook,有效并准备好被访问。我在这儿吗?如果是这样,我该怎么做才能知道何时放置Hook?谢谢!PD:我正在为我future的论文

c++ - 在 MS VC 2013 Express 中将 C++ dll 从 32 位转换为 64 位

我的代码可以在32位和64位配置中编译,但只有第一个运行良好。我用depends.exe打开库,如果是64位,我会看到两条错误消息:Error:Atleastonemodulehasanunresolvedimportduetoamissingexportfunctioninanimplicitlydependentmodule.Error:ModuleswithdifferentCPUtypeswerefound.在depends.exe的模块列表中,我看到我的dll的CPU类型是x64,但其他一切都是x86(其他一切都应该是动态链接的)。在动态链接的情况下,如何告诉VC使用64位库

c - 使用函数 CreateFile(..) 在 C 中打开串行 RS232 端口

HANDLEhPort=CreateFile(COM1,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);当没有设备连接到COM端口时,此函数是否会返回一个不为零的值? 最佳答案 目前尚不清楚您要问的问题到底是什么,但是示例中的CreateFile调用只会因以下两个原因之一而失败:没有COM1设备。这可能是因为系统中没有物理串行端口,Windows未能检测到它,或者Windows为其分配了不同的COM端口号。COM1设备已经打开。Windows只允许一个串口设备被打开一次。任何进一步打开端口的尝试都

c++ - DLL 无法在 Windows Server 2012 中加载

我用VS2005编写的应用程序是一个32位软件。它在WindowsServer2008、Windows7(64位)上运行良好,但不能在WindowsServer2012上运行。我试图找出缺少哪个DLL,因为我从LoadLibrary收到错误消息“动态链接库(DLL)初始化例程失败”。错误代码如下m_plugin=LoadLibrary(pluginPath.c_str());if(!m_plugin){conststringerror("FailedtoloadLibrary\""+pluginPath+"\""+GetLastErrorStdStr());CBLogger::log(